#!/usr/bin/perl

use strict;


#Idée des traitements sur le vocabulaire qui sera utilisé pour les divers systèmes
#Le vocabulaire sera redéfini dans chaque partie, il n'est donc pas calculé une fois pour toute

#données
my $dossier = $ARGV[0];
my ($ligne, $mot, $cat, $occur, $lemme, @spr, $file, $element, @dos, $compt, $dos_s, $file_d, @file);
my $temp;
my %dico_lemme;
my %compt_lemme;

#Lecture des dossiers
opendir(DIR, $dossier) || die "can't opendir $dossier: $!";
  @spr = grep { /supervised$/ } readdir(DIR);
closedir DIR;

sub vocabulaire()
{
	#parcours les dossiers
	foreach my $element (@spr){
		my $element2 = $dossier."/".$element;
		if($element2 eq $dossier."/supervised"){
	    		opendir(DIR, $element2) || die "can't opendir $element2: $!";
				print "Traitement de $element2 ...\n";
				@dos = grep { /star/ } readdir(DIR);
	    		closedir DIR;
		}
		else{
			@dos = @spr;
			$element2 = $dossier;
		}
	
	foreach $dos_s (@dos){
		my $dos_s2 = $element2."/".$dos_s;
		opendir(DIR, $dos_s2) || die "can't opendir $dos_s2: $!";
		    	print "Traitement de $dos_s2 ...\n";
		    	@file = grep { /txt.lemme$/ } readdir(DIR);
		closedir DIR;
	
		
	# chaque fichier
	foreach $file_d (@file){
		my $file_d2 = $dos_s2."/".$file_d;
		
		open TT, $file_d2 or die "Cannot open $file_d2\n";
			while($ligne = <TT>) {
				if($ligne=~ /^(.*)\t(.*)\t(.*)$/){
					$mot = $1; $cat = $2; $lemme = $3;
			    
					#On va seulement éviter quelques ponctuations
					if((($cat) !~ /,/) && (($cat) !~ /:/) && (($cat) !~ /SENT/) && (($cat) !~ /''/)){
						#occurrences totales du lemme
						if(!exists($dico_lemme{$lemme}{"count"})){
							$dico_lemme{$lemme}{"count"} = 1;
						}
						else{
							$dico_lemme{$lemme}{"count"} += 1;
						}
						#occurrences du lemme dans le fichier
						if(!exists($dico_lemme{$lemme}{$file})){
							$dico_lemme{$lemme}{$file} = 1;
						}
						else{
							$dico_lemme{$lemme}{$file} += 1;
						}
						#nombre de documents comprenant le lemme
						if(!exists($compt_lemme{$lemme})){
							$compt_lemme{$lemme} = 1;
							if(exists($dico_lemme{$lemme}{"File"})){
								$dico_lemme{$lemme}{"File"} += 1;
							}
							else{
								$dico_lemme{$lemme}{"File"} = 1;
							}
						}
					}
				}	
			}
	}
	}
	}
}

### Main ####
vocabulaire();
